The expansion of “cloud-based” data processing solutions, Software-as-a-Service (SaaS), etc. has transferred the bulk of data processing for online interaction away from user devices and into remotely-situated datacenters. An example datacenter may comprise an array of networked data processing devices or “nodes” (e.g., servers) to process data separately or in a collaborative manner (e.g., as in a high performance computing (HPC) architecture). Datacenters may utilize a “software-defined” approach to increase the flexibility of data processing, storage, networking and other hardware resources. For example, software-defined operation may be enabled through software virtualization technologies with assistance from hardware resources. A virtual machine (VM) may emulate physical hardware but is actually a programmatic construct that is executed on a hardware platform under control of a VM manager (VMM) or Hypervisor. Existing software-defined implementations may use, for example, hardware partitioning, virtualization (e.g., VT-x or VT-d technology from the Intel Corporation), Rack-Scale Architecture (RSA), etc.
However, even if a VM allows for the appearance of shared access to hardware resources, processing and input/output (I/O) hardware is still dedicated to a particular node that implements the requested functionality. Existing partitioning and virtualization solutions may only provide very coarse granularity to access and/or control platform level resources. Software virtualization may enable sub-socket-level partitioning. Sub-socket level partitioning may comprise allocating processing resources (e.g., cores) from the same physical package to perform separate tasks. For example, a VMM may create a logical partition for each core in which VMs or an instance of an operating system (OS) may execute. While the benefits of such operation are apparent, software virtualization may also abstract out, and thus make unavailable, valuable hardware functionality. RSA may enable some platform-level resource sharing (e.g., memory may be pooled and shared across multiple nodes), but there is no fine-level partitioning available within the socket. No existing technology allows for sharing processing or I/O hardware resources between nodes or for allocating I/O hardware resources to a pool of available resources wherein multiple nodes can share access. SW virtualization is currently the only option for sub-socket level partitioning of compute and IO resources. No existing architecture can enable pooling sharing, etc. of hardware resources via sub-socket level hardware interface technology (IT) including, for example, Serial Advanced Technology Attachment (SATA), Gigabyte Ethernet (GbE), Serial Attached Small Computer System Interface (SAS), Universal Serial Bus (USB) or any other IT existing now or developed in the future.
Although the following Detailed Description will proceed with reference being made to illustrative embodiments, many alternatives, modifications and variations thereof will be apparent to those skilled in the art.